ZZZ Projects Z.BulkOperations v2.9.39 Retail
Extend and Overcome SqlBulkCopy Limitations with Must-Have Features
High Performance Operations
Use scalable bulk operations (Bulk Insert, Update, Delete, and Merge) and always get the best performance available for your database provider.
- SQL Server 2008+
- SQL Azure
- SQL Compact
- MySQL
- SQLite
- PostgreSQL
- Oracle (Coming soon)**
** **Output Identity Value
**
Overcome SqlBulkCopy limitations and use flexible features to output inserted identity and concurrency column values.
var bulk = new BulkOperation(connection)
<span>// Output newly inserted identity value after an insert
</span><span>bulk</span><span>.</span><span>ColumnMappings</span><span>.</span><span>Add</span><span>(</span><span>"CustomerID"</span><span>,</span> <span>ColumnMappingDirectionType</span><span>.</span><span>Output</span><span>);</span>
<span>bulk</span><span>.</span><span>BulkInsert</span><span>(</span><span>dt</span><span>);</span></code>
Insert, Update, Delete, Merge and more...
Bulk Operations is not only about inserting, get morecapability over SqlBulkCopy.
- BulkInsert
- BulkUpdate
- BulkDelete
- BulkMerge (Upsert)
- BulkSaveChanges
- BulkSynchronize
// Support all type of operations
var bulk = new BulkOperation(connection);
bulk.BulkInsert(dt);
bulk.BulkUpdate(dt);
bulk.BulkDelete(dt);
bulk.BulkMerge(dt);
bulk.BulkSaveChanges(ds);
bulk.BulkSynchronize(dt);
Generic List<> as DataSource
Improve code maintainability by using strongly-typed lambda expression over hard coded string.
- Use Bulk Operations with Generic List<>
- Use Bulk Operations with Expando Object
- Use Lambda Expression for mapping
var bulk= new BulkOperation<Customer>(connection);
bulk.DestinationTableName = "Customer";
<span>// Column Columns to Input
</span><span>bulk</span><span>.</span><span>ColumnInputExpression</span> <span>=</span> <span>c</span> <span>=></span> <span>new</span> <span>{</span> <span>c</span><span>.</span><span>Code</span><span>,</span> <span>c</span><span>.</span><span>Name</span> <span>};</span>
<span>// Choose Columns to Output
</span><span>bulk</span><span>.</span><span>ColumnOutputExpression</span> <span>=</span> <span>c</span> <span>=></span> <span>c</span><span>.</span><span>CustomerID</span><span>;</span>
<span>// Choose Key to Use
</span><span>bulk</span><span>.</span><span>ColumnPrimaryKeyExpression</span> <span>=</span> <span>c</span> <span>=></span> <span>c</span><span>.</span><span>Code</span><span>;</span>
<span>bulk</span><span>.</span><span>BulkMerge</span><span>(</span><span>customers</span><span>);</span></code>
Bulk Operations from LINQ Query
Perform bulk operations from LINQ Query without loading entities in memory.
- DeleteFromQuery
- UpdateFromQuery
var bulk = new BulkOperation<Customer>(connection);
<span>// DELETE all customers inactive for more than 2 years
</span><span>bulk</span><span>.</span><span>DeleteFromQuery</span><span>(</span>
<span>c</span> <span>=></span> <span>c</span><span>.</span><span>Where</span><span>(</span><span>x</span> <span>=></span> <span>x</span><span>.</span><span>LastLogin</span> <span><</span> <span>DateTime</span><span>.</span><span>Now</span><span>.</span><span>AddYears</span><span>(-</span><span>2</span><span>)));</span>
<span>// UPDATE all customers inactive for more than 2 years
</span><span>bulk</span><span>.</span><span>UpdateFromQuery</span><span>(</span>
<span>c</span> <span>=></span> <span>c</span><span>.</span><span>Where</span><span>(</span><span>x</span> <span>=></span> <span>x</span><span>.</span><span>Actif</span> <span>&&</span> <span>x</span><span>.</span><span>LastLogin</span> <span><</span> <span>DateTime</span><span>.</span><span>Now</span><span>.</span><span>AddYears</span><span>(-</span><span>2</span><span>)),</span>
<span>c</span> <span>=></span> <span>new</span> <span>Customer</span> <span>{</span><span>Actif</span> <span>=</span> <span>false</span><span>});</span></code>
AutoMap with Case Insensitive
Sick of not being able to map column because of case sensitivity issue? Use flexible features to customize configuration
- Auditing
- Batch Size
- Case Sensitivity
- Logging
var bulk = new BulkOperation(connection);
bulk.CaseSensitive = CaseSensitiveType.Insensitive;
bulk.ColumnMappings.Add("cOdE", "Code");
bulk.BulkMerge(dt);
